const express = require('express');

const app = express();
// 配置静态资源路径
app.use(express.static(__dirname + '/public'));
// 配置ejs模板引擎
app.set('view engine', 'ejs');
// 设置ejs模板存放位置
app.set('views', './views');
// body-parser中间件
const bodyParser = require('body-parser');
// 设置bodyparser全局中间件，让所有路由都有 request.body这个属性
app.use(bodyParser.urlencoded({extended:false}));

// 引入fs模块，目的是为了往 db/data.js 中写入文件内容
const fs = require('fs');

// 模拟todo 数据
const data = require('./db/data.js');

// 配置首页路由  /GET  /index   =>   index.ejs
app.get('/index', (request, response)=>{
    response.render('index',{data});
})
// 配置详情路由 /GET   /content  =>  content.ejs
app.get('/content', (request, response)=>{
    // /content?id=1
    let id = request.query.id;
    // 通过id 去数据库中查找 id是一样的数据
    let contentData = data.find(item=>{
        return item.id == id;
    })

    response.render('content',{contentData});
})

// 添加待办事项  POST  /add    => 1.  添加信息到数据库中
//                               2.  跳转到列表首页
app.post('/add', (request,response)=>{
    // post请求表达数据，通过 request.body获取
    let {title, content} = request.body;//获取表达数据
    // 数据整理，增加id
    let addData = {
        title,
        content,
        id:data.length + 1
    }
   // console.log(addData);//{ title: '有人么？', content: '人么人么', id: 5 }
   // 将新增数据，插入数据库
    data.push(addData);
    //console.log('data',data);//验证是否入库
    // 将 data 写入 db/data.js文件中
    let strData = 'module.exports = ' + JSON.stringify(data);
    fs.writeFileSync(__dirname + '/db/data.js',strData);
    // 跳转到首页 /index
    response.redirect('/index');
})

app.listen(8080,()=>{
    console.log('server run at 8080');
})